#pragma once
class Point3D;
class Segment;

class Plane
  {
  public:
    Plane();
    Plane(const Point3D& i_a, const Point3D& i_b, const Point3D& i_c);
    ~Plane(void);
    double GetSignDist(const Point3D& i_point) const;
    double GetDist(const Point3D& i_point) const;
    bool IsOnPlane(const Point3D& i_point, double i_eps) const;

    Point3D GetIntersectionPoint(const Segment& i_segment, double i_eps) const;
  private:
    double m_A, m_B, m_C, m_D;
  };

